/*  Copyright Mihai Bazon, 2002, 2003  |  http://dynarch.com/mishoo/* ---------------------------------------------------------------------------
*
* The DHTML Calendar
*
* Details and latest version at:
* http:
*
* This script is distributed under the GNU Lesser General Public License.
* Read the entire license text here: http:
*
* This file defines helper functions for setting up the calendar.  They are
* intended to help non-programmers get a working calendar on their site
* quickly.  This script should not be seen as part of the calendar.  It just
* shows you what one can do with the calendar, while in the same time
* providing a quick and simple method for setting it up.  If you need
* exhaustive customization of the calendar creation process feel free to
* modify this code to suit your needs (this is recommended and much better
* than modifying calendar.js itself).
*/



Calendar.setup = function (params) { function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } }; 
Calendar.dateConverter = function (d){ d=d.toLowerCase(); d=d.replace("dd","d").replace("d","%d"); d=d.replace("mmm","mm").replace("mm","m").replace("m","%m"); d=d.replace("yyyy","yy").replace("yy","y").replace("y","%Y"); params["ifFormat"] = d; params["daFormat"] = d; }; 
param_default("inputField",     null); param_default("displayArea",    null); param_default("button",         null); param_default("eventName",      "click"); param_default("ifFormat",       "%Y/%m/%d"); param_default("daFormat",       "%Y/%m/%d"); param_default("singleClick",    true); param_default("disableFunc",    null); param_default("dateStatusFunc", params["disableFunc"]); param_default("dateText",       null); param_default("firstDay",       null); param_default("align",          "Br"); param_default("range",          [1900, 2999]); param_default("weekNumbers",    true); param_default("flat",           null); param_default("flatCallback",   null); param_default("onSelect",       null); param_default("onClose",        null); param_default("onUpdate",       null); param_default("date",           null); param_default("showsTime",      false); param_default("timeFormat",     "24"); param_default("electric",       true); param_default("step",           2); param_default("position",       null); param_default("cache",          false); param_default("showOthers",     false); param_default("multiple",       null); 
var tmp = ["inputField", "displayArea", "button"]; for (var i in tmp) { if (typeof params[tmp[i]] == "string") { params[tmp[i]] = document.getElementById(params[tmp[i]]); }
}
if (!(params.flat || params.multiple || params.inputField || params.displayArea || params.button)) { alert("Calendar.setup:\n  Nothing to setup (no fields found).  Please check your code"); return false; }

function onSelect(cal) { var p = cal.params; var update = (cal.dateClicked || p.electric); if (update && p.inputField) { p.inputField.value = cal.date.print(p.ifFormat); }
if (update && p.displayArea)
p.displayArea.innerHTML = cal.date.print(p.daFormat); if (update && typeof p.onUpdate == "function")
p.onUpdate(cal); if (update && p.flat) { if (typeof p.flatCallback == "function")
p.flatCallback(cal); }
if (update && p.singleClick && cal.dateClicked)
cal.callCloseHandler(); }; 
if (params.flat != null) { if (typeof params.flat == "string")
params.flat = document.getElementById(params.flat); if (!params.flat) { alert("Calendar.setup:\n  Flat specified but can't find parent."); return false; }
var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect); cal.showsOtherMonths = params.showOthers; cal.showsTime = params.showsTime; cal.time24 = (params.timeFormat == "24"); cal.params = params; cal.weekNumbers = params.weekNumbers; cal.setRange(params.range[0], params.range[1]); cal.setDateStatusHandler(params.dateStatusFunc); cal.getDateText = params.dateText; if (params.ifFormat) { cal.setDateFormat(params.ifFormat); }
if (params.inputField && typeof params.inputField.value == "string") { cal.parseDate(params.inputField.value); }
cal.create(params.flat); cal.show(); return false; }

Calendar.showcalendar = function (){ var dateEl = params.inputField || params.displayArea; var dateFmt = params.inputField ? params.ifFormat : params.daFormat; var mustCreate = false; var cal = window.calendar; if (dateEl)
params.date = Date.parseDate(dateEl.value || dateEl.innerHTML, dateFmt); if (!(cal && params.cache)) { window.calendar = cal = new Calendar(params.firstDay,
params.date,
params.onSelect || onSelect,
params.onClose || function(cal) { cal.hide(); }); cal.showsTime = params.showsTime; cal.time24 = (params.timeFormat == "24"); cal.weekNumbers = params.weekNumbers; mustCreate = true; } else { if (params.date)
cal.setDate(params.date); cal.hide(); }
if (params.multiple) { cal.multiple = {}; for (var i = params.multiple.length; --i >= 0;) { var d = params.multiple[i]; var ds = d.print("%Y%m%d"); cal.multiple[ds] = d; }
}
cal.showsOtherMonths = params.showOthers; cal.yearStep = params.step; cal.setRange(params.range[0], params.range[1]); cal.params = params; cal.setDateStatusHandler(params.dateStatusFunc); cal.getDateText = params.dateText; cal.setDateFormat(dateFmt); if (mustCreate)
cal.create(); cal.refresh(); if (!params.position)
cal.showAtElement(params.button || params.displayArea || params.inputField, params.align); else
cal.showAt(params.position[0], params.position[1]); return false; }; 
return cal; }; 